.//============================================================================
.// File:  system.mark
.//
.// Description:
.// This marking file is used to indicate system wide tuning parameters 
.// to the software architecture's translation engine.
.//
.// Notice:
.// (C) Copyright 1999-2013 Mentor Graphics Corporation
.//     All rights reserved.
.//============================================================================
.// Notes:
.// (1) Marking is specified via archetype function invocation(s) in this file.
.//     A function invocation statement MUST be specified on a single line.
.//     All indicated function input parameters must be supplied.
.// (2) All quoted string parameters are case sensitive.
.// (3) Comments in this file start with ".//".
.// (4) Do not leave any blank lines in this file.
.//============================================================================
.//
.//
.//============================================================================
.// Identify System Configuration (collection of components wired into system)
.//   Mark a package as containing the system configuration.  Code will be
.//   generated for components contained in this package and referred to
.//   from this package.  Components _not_ contained in this package and _not_
.//   referred to from this package will be excluded from code generation.
.//
.// MarkSystemConfigurationPackage( system_package )
.//
.// Where the input parameter(s) are:
.//   system_package = name of package containing the components interfaced
.//                    (wired) together into a system
.//
.// Example:
.//   .invoke MarkSystemConfigurationPackage( "system1" )
.//============================================================================
.//
.//
.//============================================================================
.// Enable Multi-tasking/threading Capability
.//   To cause MC-3020 to generate multi-tasking/threading code invoke
.//   the EnableTasking marking function.  Pass it arguments to specify
.//   the type of multi-tasking environment and whether or not to 
.//   serialize all action processing (across all tasks).
.//
.// EnableTasking( "type", "serialize_processing", tasks )
.//
.// Where the input parameter(s) are:
.//   type = The flavor of RTOS or threading being integrated.
.//   serialize_processing = When set to serialize, all actions across
.//     all tasks are forced to be serialized.  Note that serializing
.//     the action processing reduces data access contention, but 
.//     can severely reduce the multi-tasking performance of the 
.//     generated system.
.//   tasks = number of threads/tasks in the xtUML generated system
.//
.// Example:
.//   .invoke EnableTasking( "Nucleus", "", 4 )
.//   .invoke EnableTasking( "POSIX", "serialize", 2 )
.//   .invoke EnableTasking( "Windows", "", 3 )
.//============================================================================
.//
.//
.//============================================================================
.// Establish Task Priority
.//   In systems that support explicit prioritization of tasks,
.//   each task (of the number specified in EnableTasking) can have
.//   a priority assigned.  Use the SetTaskPriority marking function
.//   to set the priority for each task.
.//
.// SetTaskPriority( task number, "priority" )
.//
.// Where the input parameter(s) are:
.//   task_number = the number of the task (starting with 0)
.//   priority = priority of the designated task
.//
.// Example:
.//   .invoke SetTaskPriority( 0, "100" )
.//   .invoke SetTaskPriority( 3, "high" )
.//============================================================================
.//
.//
.//============================================================================
.// TagMaximumStringLength( max_len )
.//
.// Where the input parameter(s) are:
.//   max_len = The maximum string length, in bytes, supported.
.//
.// Example:
.//   .invoke TagMaximumStringLength( 64 )
.//============================================================================
.//
.//
.//============================================================================
.// TagMaximumRelationshipExtentSize( value )
.//
.// Where the input parameter(s) are:
.//   value = The number of containers that will be pre-allocated for 
.//     relationships that will be instantiated involving a MANY on the OIM.
.//
.// Example:
.//   .invoke TagMaximumRelationshipExtentSize( 100 )
.//============================================================================
.//
.//
.//============================================================================
.// TagMaximumSelectionExtentSize( value )
.//
.// Where the input parameter(s) are:
.//   value = The number of containers that will be pre-allocated for
.//     BPAL 'SELECT' statements.
.//
.// Example:
.//   .invoke TagMaximumSelectionExtentSize( 50 )
.//============================================================================
.//
.//
.//============================================================================
.// TagMaximumSelfDirectedEvents( value )
.//
.// Where the input parameter(s) are:
.//   value = maximum number of self directed xtUML events which are expected
.//     to be pending in the system at any given time
.//
.// Example:
.//   .invoke TagMaximumSelfDirectedEvents( 5 )
.//============================================================================
.//
.//
.//============================================================================
.// TagMaximumNonSelfDirectedEvents( value )
.//
.// Where the input parameter(s) are:
.//   value = The maximum number of non self directed xtUML events which are 
.//     expected to be pending in the system at any given time. 
.//
.// Example:
.//   .invoke TagMaximumNonSelfDirectedEvents( 20 )
.//============================================================================
.//
.//
.//============================================================================
.// TagMaximumPendingOoaTimers( value )
.//
.// Where the input parameter(s) are:
.//   value = The maximum number of xtUML timers (e.g., delayed xtUML events) 
.//     expected to be pending in the system at any given time.
.//
.// Example:
.//   .invoke TagMaximumPendingOoaTimers( 10 )
.//============================================================================
.//
.//
.//============================================================================
.// TagMaximumInterleavedBridges( value )
.//
.// Where the input parameter(s) are:
.//   value = The maximum queue depth for safe bridge operations that
.//     are interleaved between state actions (to maintain data access
.//     set consistency).
.//
.// Use this mark to expand or reduce the depth of the queue used
.// to interleave "asynchronous" bridge operations between state
.// actions.  The default will be a system divined value that should
.// be relatively safe in most cases.
.//
.// Example:
.//   .invoke TagMaximumInterleavedBridges( 4 )
.//============================================================================
.//
.//
.//============================================================================
.// TagInterleavedBridgeDataSize( value )
.//
.// Where the input parameter(s) are:
.//   value = The greatest number of bytes required to pass argument
.//     data through an interleaved bridge (synchronous service tagged
.//     "SafeForInterrupts").
.//
.// Use this mark to define how many bytes of argument data comes
.// in across an interleaved bridge operation.
.// The default is 8.
.//
.// Example:
.//   .invoke TagInterleavedBridgeDataSize( 2 )
.//============================================================================
.//
.//
.//============================================================================
.// TagCollectionsFlavor( value )
.//
.// Where the input parameter(s) are:
.//   value = The greatest number representing the type of collection
.//     mechanism to use.  The default (not marked) value is 0 and
.//     represents a singly linked (slist) flavor of container.
.//     20 represents a doubly linked (dlist) flavor of container.
.//     (Dlists make deleting instances faster.)
.//
.// Use this mark to define the flavor of collection container desired.
.// The default is 0.
.//
.// Example:
.//   .invoke TagCollectionsFlavor( 20 )
.//============================================================================
.//
.//
.//============================================================================
.// Dynamic Memory Allocation
.//
.// TagDynamicMemoryAllocationOn is used to indicate that operating system
.// services will be used to allocate memory (when extra memory is needed).
.//
.// When dynamic memory allocation is marked off, system user callout
.// functions are called when a request is made to allocate resources
.// beyond what is statically available.
.//
.// When dynamic memory allocation is marked on, the files sys_memory.h and
.// sys_memory.c are generated.  sys_memory.h contains the
.// #define ROX_MALLOC_HEAP_SIZE which allows you to control how much of the
.// heap is available to your application for consumption.
.//
.// To turn on and use dynamic memory allocation: 
.// .invoke TagDynamicMemoryAllocationOn( additional_instances ); 
.//
.// Where the argument:  additional_instances
.// is the number of additional instances to allocate each time space for new
.// instances runs out.
.//
.// Example:
.//   .invoke TagDynamicMemoryAllocationOn( 10 )
.//============================================================================
.//
.//
.//============================================================================
.// Mark Depth of Persistence Cache Queue
.//
.// This mark is used to specify the maximum number of instances and
.// links that can be queued waiting to be flushed to non-volatile
.// storage (NVS).  As instances and links become "dirty" they get
.// queued to NVS.  When Persist::Commit is called this queue is flushed.
.//
.// MarkPersistenceCacheDepth( instance_depth, link_depth )
.//
.// Where the input parameter(s) are:
.//   instance_depth = the integer depth of the linked list of instances
.//   link_depth = the integer depth of the linked list of persistent links
.//
.// Note:  The default depth of both cache queues is 128.
.//
.// Example:
.//   .invoke MarkPersistenceCacheDepth( 300, 220 )
.//============================================================================
.//
.//
.//============================================================================
.// Do not add anything at the end of this file!
.//============================================================================
